VALUE TYPES
In this version you are provided with the following basic value types from
which you can make attribute types.
- Numeric for whole numbers
- Range: -billion to billion (normal 32 bits)
- Held as: 32 bits
- Coding: simple signed binary number
- Numeric for floating point numbers
- Range: normal 32 bits
- Held as: 32 bits
- Coding: normal exponent and mantissa
- Numerator and denominator, both can be signed
- Used for any ratio
- Range: Each part has range of full integer.
- The ratio can represent infinity by holding denominator = 0
- Held as: Two 32 bit integers
- Coding: Two simple signed binary numbers; Infinity when denominator =
0
- In most manipulations, the greatest common divisor is removed (so if
you multiply 4/7 by 14/15 you get 8/15)
- Numerator and denominator, both positive
- Used especially for odds and conversions to and from probability
- Used for bayesian multipliers
- Range: Each part has range 0 to 65k
- Held as: Two unsigned 16 bit words
- Coding: Two simple unsigned binary numbers; Infinity when denominator
= 0
- In most manipulations the greatest common divisor is removed
- Any string
- Range: up to 200 characters in length at present
- Held as: child 'Sysatt' block with as much space as needed
- Coding: ASCII
- Truth value: yes or no, true or false
- Range: true or false
- Held as: unsigned 16 bit word
- Coding: 0 = false, anything else = true
- 0 to 1 (0 to 100%) for soft truth value
- Range: 0 to 1
- Held as: Unsigned 16 bit word
- Coding: 0x0000 means 0, 0xffff means 1
- Probability used for evidential reasoning
- Has a-priori and lower and upper cut-offs
- Range: Part as probability
- Held as: Four probabilities
- Coding: As probability, four times
- Represents a proportion 0 to 100%
- Used for anything that requires a limit of 100%
- Range: 0 to 100%
- Held as: Unsigned 16 bit word
- Coding: 0xffff means 100%
- In many things proportion and probability are interchangeable
(one-zero-minus-one, e.g. result of cosine)
- Like a proportion that can go negative as well as positive
- Used for e.g. degrees of belief, degrees of dislike
- Range: -1 to 0 to 1
- Held as: Signed 32 bit word,
- Coding: 0x80000000 means -1, 0 means 0, 0x7fFFffFF means 1
(0 to 360 degrees)
- A circular value which represents proportion round a circle
- Used for angles, directions, etc.
- Range: 0 to 360 degrees (2.pi radians)
- Held as: Unsigned 16 bit word
- Coding: 0x0000 = 0 and 360 degrees. 0xffff = just before 360, 90
degrees = 0x4000, 180 degrees = 0x8000, etc.
- An index number for selecting an entity from a set
- See also Ordinal, which is ordered
- Strictly, numeric comparisons and operations meaningless, but in
practice allowed as for Ordinal
- Range: strictly meaningless
- Each value is expected to have an attached string name
- Held as: Unsigned 16 bit word
- Coding: 0 means 'nothing selected', 1 upwards shows selection
- An index number for selecting an entiry from a list
- See also Enum, which is unordered
- Numeric comparisons and operations meaningful
- Range: 1 to 65k
- Each value can be linked to an attached string name
- Held as: Unsigned 16 bit word
- Coding: 1 = first in list, 2 = second, etc. 0 = 'nothing selected'
- The DSAP of a block in the KB
- Used for identifying things in the KB and e.g. getting name of it
- Its value must never be altered as it is like a pointer
- Range: strictly meaningless
- Coding: 32 bit relative pointer
Copyright (c) Andrew
Basden 1997.